//***********************************************************************
//	File:		IEntity.h
//	Author:		Spencer Hawkins
//	Course:		SGP 1405
//	Purpose:	Entity Interface class
//***********************************************************************
//***********************************************************************
//	Purposfully left blank for all comments regarding this file 
//	
//	
//	
//***********************************************************************



#pragma once

#include "../SGD Wrappers/SGD_Geometry.h"

class IEntity
{
public:
	IEntity() = default;
	virtual ~IEntity() = default;

	/**********************************************************/
	// Interface:
	//	- pure virtual methods MUST be overridden
	virtual void	Update(float elapsedTime) = 0;
	virtual void	Render(void) = 0;

	virtual SGD::Rectangle GetRect(void)	const = 0;
	virtual int		GetType(void)	const = 0;
	virtual void	HandleCollision(const IEntity* pOther) = 0;


	/**********************************************************/
	// Reference Counting:
	//	- track how many 'owners' are pointing to this entity
	virtual void	AddRef(void) = 0;
	virtual void	Release(void) = 0;

};

